package edu.hubu.supermarketmanagementsystem.service.impl;

import edu.hubu.supermarketmanagementsystem.entity.Admin;
import edu.hubu.supermarketmanagementsystem.entity.Area;
import edu.hubu.supermarketmanagementsystem.mapper.AreaMapper;
import edu.hubu.supermarketmanagementsystem.service.AreaService;
import edu.hubu.supermarketmanagementsystem.vo.ResultVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service // 添加 @Service 注解，标识为 Spring 的服务类
public class AreaServiceImpl implements AreaService {

    // 注入 AreaMapper 进行数据库操作
    @Autowired
    private AreaMapper areaMapper;


    /**
     * 新增超市区域。
     * @return ResultVO实体，如果添加成功则包含 true，否则包含 false。
     */
    @Override
    public ResultVO<Boolean> addArea(String name, String status, String location, Integer adminId) {
        Area area = new Area();
        area.setName(name);
        area.setStatus(status);
        area.setLocation(location);
        area.setAdminId(adminId);

        if(areaMapper.addArea(area) > 0){
            return new ResultVO<>(200, "已添加新区域。", true);
        }
        else {
            return new ResultVO<>(500, "添加区域失败", false);
        }
    }

    /**
     * 更新超市区域。
     *
     * @return ResultVO实体，如果添加成功则包含 true，否则包含 false。
     */
    @Override
    public ResultVO<Boolean> updateArea(Integer id, String name, String status, String location, Integer adminId) {
        Area area = new Area();
        area.setAreaId(id);
        area.setName(name);
        area.setStatus(status);
        area.setLocation(location);
        area.setAdminId(adminId);

        if(areaMapper.updateArea(area) > 0){
            return ResultVO.success(true);
        }
        else {
            return ResultVO.error(500, "更新失败");
        }
    }

    /**
     * 删除超市区域。
     *
     * @param areaID 待删除超市区域的ID。
     * @return ResultVO实体，如果添加成功则包含 true，否则包含 false。
     */
    @Override
    public ResultVO<Boolean> deleteArea(int areaID) {
        return null;
    }

    /**
     * 获取特定的超市区域信息。
     *
     * @param areaID 超市区域的ID。
     * @return ResultVO实体，包含符合条件的超市区域。
     */
    @Override
    public ResultVO<Area> getArea(int areaID) {
        return null;
    }

    /**
     * 获取特定的超市区域列表。
     *
     * @return ResultVO实体，包含符合条件的超市区域列表。
     */
    @Override
    public ResultVO<List<Area>> getAreasList() {
        List<Area> areas = areaMapper.findAllAreas();
        if (areas != null) {
            return new ResultVO<>(200, "获取区域列表成功。", areas);
        }
        else {
            return new ResultVO<>(500, "不存在区域。", null);
        }
    }

    /**
     * 删除区域。
     *
     * @param id 待删除用户的ID。
     * @return 如果成功则返回真，失败返回假。
     */
    @Override
    public ResultVO<Boolean> deleteArea(Integer id) {
        if(areaMapper.deleteArea(id) > 0){
            return ResultVO.success(true);
        }
        else {
            return ResultVO.error(500, "区域删除失败");
        }
    }
}
